package com.example.blog.mapper;

import com.example.blog.entity.Article;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 文章数据访问接口
 * 负责文章相关的数据库操作
 */
@Mapper
public interface ArticleMapper {

    /**
     * 创建新文章
     * @param article 文章信息对象，包含标题、内容和作者ID
     */
    void createArticle(Article article);

    /**
     * 获取所有文章列表
     * @return 文章列表，按创建时间降序排列
     */
    List<Article> getAllArticles();

    /**
     * 根据ID获取文章详情
     * @param id 文章ID
     * @return 文章详细信息，包括作者信息
     */
    Article getArticleById(@Param("id") Long id);

    /**
     * 更新文章信息
     * @param article 文章信息对象
     * @return 更新的记录数
     */
    int updateArticle(Article article);

    /**
     * 删除文章
     * @param id 文章ID
     * @return 删除的记录数
     */
    int deleteArticle(@Param("id") Long id);

    /**
     * 获取指定用户的所有文章
     * @param userId 用户ID
     * @return 该用户发布的文章列表
     */
    List<Article> getArticlesByUserId(@Param("userId") Long userId);
}